package com.xsg.printer.core;

import com.xsg.printer.core.model.XsgCoordinate;
import com.xsg.printer.core.model.XsgFont;
import com.xsg.printer.core.model.XsgSheet;
import com.xsg.printer.core.model.XsgTemplate;

import java.util.Collection;
import java.util.List;

public interface IVoucherPaintAction {

    /**
     * 画线
     * @param start
     *              - 起始坐标
     * @param end
     *              - 终点坐标
     * @param borderType
     *              - 线的样式
     * @param color
     *              - 线的颜色
     */
    void drawLine(XsgCoordinate start, XsgCoordinate end, int borderType, int color);

    /**
     * 画二维码
     * @param value
     *              - 值
     * @param start
     *              - 起始坐标
     * @param width
     *              - 宽度
     * @param height
     *              - 高度
     */
    void drawQrCode(String value, XsgCoordinate start, int width, int height);

    /**
     * 画条形码
     * @param value
     *              - 值
     * @param start
     *              - 起始坐标
     * @param width
     *              - 宽度
     * @param height
     *              - 高度
     */
    void drawBarCode(String value, XsgCoordinate start, int width, int height);

    /**
     * 画图片
     * @param sourcePath
     *              - 图片位置
     * @param start
     *              - 起始坐标
     * @param width
     *              - 宽度
     * @param height
     *              - 高度
     */
    void drawImage(String sourcePath, boolean isRemote, XsgCoordinate start, int width, int height);

    /**
     * 画文字
     * @param value
     *              - 内容
     * @param start
     *              - 起始坐标
     * @param width
     *              - 终点坐标
     * @param font
     *              - 字体样式
     */
    int drawString(String value, XsgCoordinate start, int width, int height, XsgFont font);

    /**
     * 画圆并且带内容
     * @param value
     *              - 内容
     * @param start
     *              - 起始坐标
     * @param width
     *              - 终点坐标
     */
    void drawCircle(String value, XsgCoordinate start, int width, int height, XsgFont font);

    /**
     * 画表格
     * @param value
     *              -数据值
     * @param start
     *              - 起始坐标
     * @param width
     *              - 宽度
     * @param height
     *              - 高度
     */
    void drawSheet(XsgSheet sheet, Collection<Collection<?>> value, XsgCoordinate start, int width, int height, XsgFont font);

    /**
     * 绘制模板
     * @param template
     *              - 模板
     */
    void drawTemplate(XsgTemplate template);
}
